package com.qf.service;

import com.qf.entity.Dessertmenu;
import com.qf.entity.UserAttention;
import com.qf.entity.UserCollection;
import com.qf.entity.UserShare;
import com.qf.entity.custom.DessertmenuCustom;
import com.qf.entity.custom.ShopCustom;

import java.util.List;

/**
 * @author: ZhangYubin
 * @date: 2020/7/21 22:03
 * @description:
 */
public interface DiscoverService {

    /**
     * 发现精品页列表查询dessertmenu和user的数据
     * @return 返回一个List<DessertmenuCustom>集合
     * @throws Exception
     */
    List<DessertmenuCustom> findAllDessertmenu()throws Exception;

    /**
     * 发现精品页每条详细信息  根据id查询
     * @param id 对应Dessertmenu实体类的dessertmenuId
     * @return 返回一个Dessertmenu实体类型数据
     * @throws Exception
     */
    Dessertmenu findDessertmenu(int id)throws Exception;
    //增加发现精品页菜谱内容
    int addDessertmenu(Dessertmenu dessertmenu)throws Exception;
    //删除发现精品页菜谱内容
    int delDessertmenu(int[] ids)throws Exception;
    //修改发现精品页菜谱内容(批量删除)
    int updateDessertmenu(Dessertmenu dessertmenu)throws Exception;

    /**
     * 发现关注页列表查询shop,dessertmenu和user的数据
     * @return 返回一个List<ShopCustom>集合
     */
    List<ShopCustom> selectShopDessermenuUser();

    /**
     * 发现关注页：点击关注是，在user_attention添加数据
     * @param userAttention
     * @return 返回一个添加成功或者失败的true or false
     */
    boolean addUserattention(UserAttention userAttention);

    /**
     * 发现晒单页 查询所有啥单信息，按点赞数排序
     * @return 返回一个List<UserShare>集合
     */
    List<UserShare> findAllShareOrderByPoint();

    /**
     * 发现晒单页：点击关注是，在user_collection添加数据(收藏晒单）
     * @param userCollection 包含userId，shareId，collectCreatetime属性值的实体类
     * @return 返回一个添加成功或者失败的true or false
     */
    boolean addUserCollection(UserCollection userCollection);

    /**
     * 发现晒单页:用户或后台进行添加user_share表数据
     * @param userShare 包含shareUserId，shareImages，shareWords的userShare的实体类
     * @return 返回一个添加成功或者失败的true or false
     */
    boolean addUserShare(UserShare userShare);

    /**
     * 发现晒单页：点击红心，在user_share表中增加收藏次数，每次加一
     * @param userShare 包含shareCollectCounts属性值的实体类
     * @return 返回一个更新成功或者失败的true or false
     */
    boolean modifyUserShare(UserShare userShare);

    /**
     * 发现上新页，根据是否是new查询shop和product表
     * @return 返回List<ShopCustom>
     */
    List<ShopCustom> findAllShopProductIsNew();

    /**
     * 发现推荐页，根据是否是recommend查询shop和product表
     * @return 返回List<ShopCustom>
     */
    List<ShopCustom> findAllShopProductIsRecommend();
}
